Sub-Phase 1.2: Talent Repository
Fetch builder credibility from Talent Protocol API without inference.
Objective
- Use
GET /score account_source=wallet- API key required
- FORBIDDEN: ranking, scorer variants
Exit Criteria
builderScore = points(direct mapping)verifiedBuilder = points > 0(computed)- Returns
available | not_found | error(never throws) - Availability explicit
- Configuration injected (no hardcoded URLs or API keys)
- Uses
nullfor unknown meta values
API Reference
Endpoint: GET https://api.talentprotocol.com/score
Query Parameters:
id: Wallet addressaccount_source: Must bewallet
Required Headers:
X-API-KEY: Talent Protocol API keyAccept:application/json
Response:
{
"score": {
"points": 187,
"last_calculated_at": "2026-01-21T09:36:53Z",
"rank_position": 739,
"slug": "builder_score"
}
}
Behavior Notes:
- API returns
points: 0for unknown wallets (NOT 404) rank_positionmay benullfor low-activity wallets
Field Mapping
| Phase 0 Field | Talent API Field | Notes |
|---|---|---|
data.builderScore | score.points | Direct mapping |
signals.verifiedBuilder | Computed | points > 0 |
meta.lastUpdatedAt | score.last_calculated_at | Direct, null if absent |
FORBIDDEN Fields
rank_position(present in response - DO NOT MAP)slug(internal identifier - DO NOT MAP)- Any percentile or leaderboard data
Availability Mapping
| API Response | Availability State |
|---|---|
| 200 with valid score object | available |
| 200 with missing/malformed data | not_found |
| 401 (invalid key) | error |
| Network failure | error |
Exit Checklist
- Endpoint path verified against live Talent Protocol API
- Repository compiles without errors
- Returns
available | not_found | error(never throws) -
builderScoremaps directly frompoints -
verifiedBuildercomputed aspoints > 0 - No ranking or scorer variants exposed
- Configuration injected via
TalentConfig - Uses
nullfor unknown meta fields - No business logic in repository